Tento kousek kódu, který se stará o výběr tahu počítače na základě náhodně vygenerovaného čísla, může vypada na první pohled správně, ale ve skutečnosti jej stačí párkrát spustit a chybička se projeví.
In [ ]:
from random import randrange
cislo = randrange(2)
if cislo == 0:
tah_pocitace = "kámen"
print("Počítač vybral kámen.")
if cislo == 1:
print("Počítač vybral nůžky.")
tah_pocitace = "nůžky"
else:
tah_pocitace = "papír"
print("Počítač vybral papír.")
Chybička byla v záměně elif
za další if
což způsobilo rozdělení jedné podmínky se třemi větvemi na dvě samostatné podmínky, z nichž ta první měla jen jednu větev (jen jeden if) a ta druhá dvě (jeden if a jeden else).
In [ ]:
from random import randrange
cislo = randrange(2)
if cislo == 0:
tah_pocitace = "kámen"
print("Počítač vybral kámen.")
elif cislo == 1:
print("Počítač vybral nůžky.")
tah_pocitace = "nůžky"
else:
tah_pocitace = "papír"
print("Počítač vybral papír.")
Copak se asi stane s proměnnou strana
ještě před výpočtem povrchu a objemu?
In [ ]:
strana = int(input('Zadej velikost strany v cm: '))
strana = 2852
print('Objem krychle o straně',strana,'cm je', strana**3,'cm3')
print('Obsah krychle o straně',strana,'cm je', 6*strana**2,'cm2')
Několik možných řešení programu šťastná-bohatá. Všechny dělají totéž, ale některé jsou zkrátka lépe čitelné a kompaktnější.
In [ ]:
print('Odpovídej "ano" nebo "ne".')
stastna_retezec = input('Jsi šťastná?')
bohata_retezec = input('Jsi bohatá?')
if stastna_retezec == 'ano':
if bohata_retezec == 'ano':
print ("ty se máš")
elif bohata_retezec == 'ne':
print ("zkus mín utrácet")
elif stastna_retezec == 'ne':
if bohata_retezec == 'ano':
print ("zkus se víc usmívat")
elif bohata_retezec == 'ne':
print ("to je mi líto")
else:
print ("Nerozumím.")
In [ ]:
print('Odpovídej "ano" nebo "ne".')
stastna_retezec = input('Jsi šťastná?')
bohata_retezec = input('Jsi bohatá?')
if stastna_retezec == 'ano' and bohata_retezec == 'ano':
print ("Grauluji")
elif stastna_retezec == 'ano' and bohata_retezec == 'ne':
print('Zkus míň utrácet.')
elif stastna_retezec == 'ne' and bohata_retezec == 'ano':
print ("zkus se víc usmívat")
elif stastna_retezec == 'ne' and bohata_retezec == 'ne':
print ("to je mi líto")
else:
print ("Nerozumim")
In [ ]:
print('Odpovídej "ano" nebo "ne".')
stastna_retezec = input('Jsi šťastná? ')
if stastna_retezec == 'ano':
stastna = True
elif stastna_retezec == 'ne':
stastna = False
else:
print('Nerozumím!')
bohata_retezec = input('Jsi bohatá? ')
if bohata_retezec == 'ano':
bohata = True
elif bohata_retezec == 'ne':
bohata = False
else:
print('Nerozumím!')
if bohata and stastna:
print('Gratuluji!')
elif bohata:
print('Zkus se víc usmívat.')
elif stastna:
print('Zkus míň utrácet.')
else:
print('To je mi líto.')
Tato konkrétní implementace Kámen, nůžky, papír pomocí and/or jde ještě o kus zkrátit a vylepšit. Najdeš lepší řešení?
In [ ]:
from random import randrange
cislo = randrange(3)
if cislo == 0:
tah_pocitace='kámen'
elif cislo == 1:
tah_pocitace = 'nůžky'
else:
tah_pocitace = 'papír'
tah_cloveka = input('kámen, nůžky, nebo papír? ')
if (tah_cloveka == "kámen" and tah_pocitace == "kámen") or (tah_cloveka=="nůžky" and tah_pocitace == "nůžky") or (tah_cloveka=="papír" and tah_pocitace=="papír"):
print("Plichta")
elif (tah_cloveka == "kámen" and tah_pocitace == "nůžky") or (tah_cloveka=="nůžky" and tah_pocitace == "papír") or (tah_cloveka=="papír" and tah_pocitace=="kámen"):
print("Vyhrál jsi")
elif (tah_cloveka == "kámen" and tah_pocitace == "papír") or (tah_cloveka=="nůžky" and tah_pocitace == "kámen") or (tah_cloveka=="papír" and tah_pocitace=="nůžky"):
print("Prohrál jsi!")
else:
print('Nerozumím.')
In [ ]:
from random import randrange
cislo = randrange(3)
if cislo == 0:
tah_pocitace='kámen'
elif cislo == 1:
tah_pocitace = 'nůžky'
else:
tah_pocitace = 'papír'
tah_cloveka = input('kámen, nůžky, nebo papír? ')
if tah_cloveka == tah_pocitace:
print("Plichta")
elif (tah_cloveka == "kámen" and tah_pocitace == "nůžky") or (tah_cloveka=="nůžky" and tah_pocitace == "papír") or (tah_cloveka=="papír" and tah_pocitace=="kámen"):
print("Vyhrál jsi")
elif (tah_cloveka == "kámen" and tah_pocitace == "papír") or (tah_cloveka=="nůžky" and tah_pocitace == "kámen") or (tah_cloveka=="papír" and tah_pocitace=="nůžky"):
print("Prohrál jsi!")
else:
print('Nerozumím.')